import { LoadStatus } from '../../types'

export default interface BaseLoadHandler {
  /**
   * 是否可以本地加载（之前已经加载过缓存到了本地）
   */
  supportCacheLoad(): Promise<boolean>
  /**
   * 加载
   */
  load(): Promise<any>
  /**
   * 加载需要的大小bytes
   */
  getLoadBytes(): number

  /**
   * 获取加载进度 0-1
   */
  getLoadProgress(): number

  /**
   * 获取加载状态
   */
  getStatus(): LoadStatus

  /**
   *
   * @param callback 加载状态改变时回调
   */
  onStatusChange(callback: (status: LoadStatus) => void): void
  /**
   *
   * @param callback 加载进度变化时回调
   */
  onProgressChange(callback: (progress: number) => void): void
}
